#ifndef __MOTOR_H__
#define __MOTOR_H__

#if defined(USE_HAL_DRIVER)
  #if defined(STM32F405xx) || defined(STM32F407xx) || defined(STM32F429xx)
    #include <stm32f4xx_hal.h>
  #endif
  #if defined(STM32F103xx)
    #include <stm32f1xx_hal.h>
  #endif
  #if defined(STM32H750xx)
    #include <stm32h7xx_hal.h>
  #endif
#endif

#ifdef __cplusplus
class sMotor{
	public:
		sMotor(GPIO_TypeDef* GPIOx, uint16_t* GPIO_Pins);
		void init(void);
		void step(int cnt);
		void handle(void);
		void stop(void);
        void _forward(void);
 		void _backward(void); 
		void _stop(void);    
    
	private:
		GPIO_TypeDef* _GPIOx;
		uint16_t _GPIO_Pin[4];
		int total_step = 0;
		bool stop_flag = false;
//		void _forward(void);
//		void _backward(void);
//		void _stop(void);
		void setIO(uint8_t index, bool status){ 
			if(status) HAL_GPIO_WritePin(_GPIOx, _GPIO_Pin[index], GPIO_PIN_SET);
			else HAL_GPIO_WritePin(_GPIOx, _GPIO_Pin[index], GPIO_PIN_RESET);
		}
};

#endif

#endif


